package spring.hibernate.jaiku.dao.imp;

import java.util.List;

import org.hibernate.FetchMode;
import org.hibernate.criterion.DetachedCriteria;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import spring.hibernate.jaiku.dao.EntradaDao;
import spring.hibernate.jaiku.modelo.Entrada;

//otra forma de obtener el session factory: ver ComentarioHibernate
public class EntradaHibernate extends HibernateDaoSupport implements EntradaDao {

	@SuppressWarnings("unchecked")
	public List<Entrada> listarEntradas() throws Exception {

		List<Entrada> entradas = null;
		
		entradas = this.getHibernateTemplate().find("from Entrada");

		return entradas;

	}

	public void nuevaEntrada(Entrada entrada) throws Exception {

		this.getHibernateTemplate().persist(entrada);

	}

	@SuppressWarnings("unchecked")
	public List<Entrada> listarEntradasConAutor() throws Exception {

		List<Entrada> entradas = null;

		DetachedCriteria criteria = DetachedCriteria.forClass(Entrada.class);
		criteria.setFetchMode("autor", FetchMode.JOIN);

		entradas = this.getHibernateTemplate().findByCriteria(criteria);

		return entradas;

	}

	public void borrarEntrada(Entrada entrada) throws Exception {

		this.getHibernateTemplate().delete(entrada);

	}

}
